EC2オートスケールの新しいインスタンス置き換え「終了する前に起動」を試してみた。
2023年11月15日、Amazon EC2 Auto Scaling のアップデートで、 EC2オートスケールのインスタンス交換時、新しいインスタンスを予め起動させた後、古いインスタンスを終了させる「終了する前に起動」が可能になりました。
EC2インスタンス交換中の性能や可用性の低下を回避できる、新しい置き換え操作を試す機会がありましたので、紹介させていただきます。
準備
EC2オートスケールの「インスタンスの更新」を評価するため、 希望数、最小数、最大数、全て「4」と設定したオートスケール環境を用意しました。
- 今回設置には以下のCloudFormationテンプレートを利用しました。
AWSTemplateFormatVersion: '2010-09-09' Description: Auto Scaling Test Parameters: Ec2ImageId: Type: AWS::SSM::Parameter::Value<String> Default: /aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-arm64 Resources: Ec2LaunchTemplate: Type: AWS::EC2::LaunchTemplate Properties: LaunchTemplateData: ImageId: !Ref Ec2ImageId InstanceType: t4g.nano Ec2InstanceAutoScalingGroup: Type: AWS::AutoScaling::AutoScalingGroup Properties: DesiredCapacity: 4 MinSize: 4 MaxSize: 4 LaunchTemplate: LaunchTemplateId: !Ref 'Ec2LaunchTemplate' Version: !GetAtt 'Ec2LaunchTemplate.LatestVersionNumber' AvailabilityZones: - ap-northeast-1a
操作
EC2ダッシュボードを利用して、Auto Scaling グループを指定、「インスタンスの更新」を行いました。
検証時、全てのインスタンスを交換対象とするため、スキップマッチングは「無効」としました。
最大数「150%」
インスタンス置き換え方法 として「終了する前に起動」、 インスタンスの最大数は「150%」、一時的に6台までEC2インスタンスを起動する指定としました。
2台起動→2台終了→2台起動→2台終了との動作が確認できました。
最大数「200%」
インスタンス置き換え方法 として「終了する前に起動」、 インスタンスの最大数は「200%」一時的に8台までEC2インスタンスを起動する指定としました。
4台起動→4台終了との動作が確認できました。
最小「50%」
インスタンス置き換え方法 として「終了してから起動」、最小数「50%」とする指定を試しました。
2台終了→2台起動→2台終了→2台起動 との動作が確認できました。
まとめ
インスタンスの更新時、従来も最小正常率を指定する事は可能でしたが、 インスタンス交換中の性能や可用性の低下を回避する必要がある場合、事前、事後にオートスケール台数の調整が必要でした。
通常のEC2インスタンス、1秒単位のオンデマンド料金やスポット料金で利用する場合、「終了する前に起動」によるコスト影響は軽微と予想されます。 高性能が求められるオートスケール環境で、EC2インスタンスの入れ替えをオンラインで行う必要が生じた際には、今回のアップデートをご活用ください。